// var+函数作用域
var arr = [];
for(var i = 0 ; i < 4; i++) {
    arr.push(function() {
        return i;
    })
};
console.log('1 var+函数作用域=> arr=>', arr[0](), arr[1](), arr[2]());

var arr2 = [];
for(let i = 0 ; i < 4; i++) {
    arr2.push(function() {
        return i;
    })
};
console.log('2 let+函数作用域=> arr=>', arr2[0](), arr2[1](), arr2[2]());

var arr3 = [];
for(var i = 0 ; i < 4; i++) {
    (function(i) {
        arr3.push(function() {
            return i;
        })
    })(i);
};
console.log('3 var+函数作用域=> arr=>', arr3[0](), arr3[1](), arr3[2]());

// 筛选+闭包
let arr4 = [1, 3, 44, -1, 0, 99, 676, 33];
// let filterArr = arr4.filter((v) => {
//     return v >= 30 && v <= 100;
// });

let filterFn = function (a, b) { 
    return function(v) {
        return v >= a && v <= b;
    }
 }

 let filterArr = arr4.filter(filterFn(0, 99));
console.log('筛选+闭包=>', filterArr);

// 排序+闭包
let sortArr = [1, 2, 44, 0, -2, 99, 76, -38, -34];
// let sortRes = sortArr.sort((a, b) => {
//     return b - a;
// });

let sortFn = function(type) {
    return (a, b) => {
        if (type == 'asc') return a > b ? 1 : -1;
        return a > b ? -1 : 1; 
    }
}

let sortRes = sortArr.sort(sortFn('asc'));
console.log('排序+闭包=>', sortRes);

// 手动垃圾回收
let divs = document.querySelectorAll('div');
divs.forEach(item => {
    let hd = item.getAttribute('hd');
    item.addEventListener('click', function() {
        console.log('div-item=>', item, hd);
    });
    item = null;
});

